package org.cn.cf.group;

import java.util.List;
import java.util.Map;

import net.jxta.endpoint.Message;
import net.jxta.id.ID;
import net.jxta.peergroup.PeerGroup;

import org.cn.cf.platform.CFMember;
import org.cn.cf.platform.IAuthentication;
import org.cn.cf.service.ICFService;
/***/
public interface ICFGroup extends IAuthentication{

	//PeerGroup 的创建者
	public void setMember(CFMember user);
	public CFMember getMember();
	
	public PeerGroup getPeerGroup(); 
	public void setPeerGroup(PeerGroup group);
	
	//是否用于辅助通信
	public void isForComm();
	public void setForComm();
	
	//组服务
	public void setRunServices(List<ICFService> services);
	public List<ICFService> getRunServices();
	
	public void addRunService(ICFService service);
	public void removeRunService(ICFService service);
	
	public  List<CFMember> getActiveMembers();
	public void setActiverMembers(List<CFMember> members);
	
	public void addActivrMember(CFMember member);
	public void removeActivrMember(CFMember member);
	
	//开始从活动缓存中取，没有再到DB中取，还没有返回null
	public CFMember getMember(ID id);
	
	//创建者ID PeerId
	public Map<ID,ICFGroup> getChilds();
	public void setChilds(Map<ID,ICFGroup> childs);
	
	public void addChild(ID id);
	public void removeChild(ID id);
	
	//消息传递  在基础层就获取源节点IP信息，并尽量将其传递到目标点
	public void walkMessage(Message message,int count);

	//慎用，主要用于在辅助层以上节点宣传资源
	public void propagateMessage(Message message);
	
}
